#include<iostream>
#include<vector>
#include<unordered_map>
using namespace std;
class Solution {
public:
    int subarraySum(vector<int>& nums, int k) {
        unordered_map<int,int>map;
        int ans=0;
        map[0]=1;
        for(int i=1;i<nums.size();i++)
        {
            nums[i]+=nums[i-1];
        }
        for(int i=0;i<nums.size();i++)
        {
            if(map[nums[i]-k])ans+=map[nums[i]-k];//每次都加上上次没加的
            map[nums[i]]++;
        }

        return ans;
    }
};